#include "testsqlmodel.h"
#include "ui_testsqlmodel.h"
#include <QSqlQueryModel>
#include <QSqlTableModel>
#include <QPushButton>
#include <QMessageBox>
#include <QSqlRelationalTableModel>
#include <QSqlRelation>
#include <QSqlRelationalDelegate>
TestSqlModel::TestSqlModel(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::TestSqlModel)
{
    ui->setupUi(this);


//    QString strSql = "SELECT * FROM student";
//    QSqlQueryModel *pModel1 = new QSqlQueryModel();
//    pModel1->setQuery(strSql);
//    pModel1->setHeaderData(0, Qt::Horizontal, tr("ID"));
//    pModel1->setHeaderData(1, Qt::Horizontal, tr("姓名"));
//    pModel1->setHeaderData(2, Qt::Horizontal, tr("年龄"));
//    ui->tableView_dis1->setModel(pModel1);
//    ui->tableView_dis1->verticalHeader()->setHidden(true);
//    ui->tableView_dis1->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);

    QSqlTableModel *pModel = new QSqlTableModel();
    pModel->setTable("student");
    pModel->setSort(0, Qt::DescendingOrder);    // 排序  这里降序  大到小
    pModel->select();
    //pModel->setFilter(QString("id > 2"));     // 设置条件
    // 设置编辑策略
    // 所有的改变都会在模型中进行缓存，直到调用submitAll()或者热reverAll()函数
    //pModel->setEditStrategy(QSqlTableModel::OnManualSubmit);
    // 所有对模型的改变都会立即应用到数据库
    //pModel->setEditStrategy(QSqlTableModel::OnFieldChange);
    // 对每一条记录的改变会在用户选择另一条记录时被应用
    pModel->setEditStrategy(QSqlTableModel::OnRowChange);

    ui->tableView_dis2->setModel(pModel);
    ui->tableView_dis2->verticalHeader()->setHidden(true);
    ui->tableView_dis2->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);

    // QSqlRelationalTableModel
    QSqlRelationalTableModel *pModel3 = new QSqlRelationalTableModel();
    pModel3->setTable("student1");
    pModel3->setRelation(2, QSqlRelation("course", "id", "name"));
    pModel3->select();
    pModel3->setHeaderData(0, Qt::Horizontal, tr("ID"));
    pModel3->setHeaderData(1, Qt::Horizontal, tr("姓名"));
    pModel3->setHeaderData(2, Qt::Horizontal, tr("课程名"));
    ui->tableView_dis1->setModel(pModel3);
    ui->tableView_dis1->verticalHeader()->setHidden(true);
    ui->tableView_dis1->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
    ui->tableView_dis1->setItemDelegate(new QSqlRelationalDelegate(ui->tableView_dis1));

    QPushButton *btnRefresh = new QPushButton(tr("刷新"), this);
    btnRefresh->move(10,500);
    btnRefresh->setFixedSize(100,80);
    connect(btnRefresh, &QPushButton::clicked, this, [=]()
    {
//        pModel1->setQuery(strSql);
//        ui->tableView_dis1->setModel(pModel1);
        // 获取选中行
//        int curRow = ui->tableView_dis1->currentIndex().row();
//        int ok1 = QMessageBox::warning(this, tr("删除当前行"), tr("你确定删除当前行吗?"),
//                                       QMessageBox::Yes, QMessageBox::No);
//        if(ok1 == QMessageBox::No)
//        {
//            pModel->revertAll();
//        }
//        else
//        {
//            pModel->submitAll();
//            pModel->setTable("student");
//            pModel->select();
//            ui->tableView_dis2->setModel(pModel);
//        }

    });
}

TestSqlModel::~TestSqlModel()
{
    delete ui;
}

void TestSqlModel::on_btn_fresh_clicked()
{

}

